#ifndef _GPIO_API_H
#define _GPIO_API_H

#include "gpio/gpio_driver.h"

#ifdef __cplusplus
extern "C" {
#endif

EXTERN DEVICE_PUBLIC(gpio_device_t *) gpio_device_find(const char *name);
EXTERN DEVICE_PUBLIC(int) gpio_device_init(gpio_device_t *dev, gpio_device_config_t *dev_cfg);
EXTERN DEVICE_PUBLIC(int) gpio_device_deinit(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_set_level(gpio_device_t *dev, gpio_device_pin_level_t level);
EXTERN DEVICE_PUBLIC(int) gpio_device_get_level(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_interrupt_enable(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_interrupt_disable(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_set_interrupt_type(gpio_device_t *dev, gpio_device_intr_type_t type);
EXTERN DEVICE_PUBLIC(int) gpio_device_isr_cb_add(gpio_device_t *dev, gpio_isr_cb isr_cb, void *args);
EXTERN DEVICE_PUBLIC(int) gpio_device_isr_cb_remove(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_lowpower_enter(gpio_device_t *dev);
EXTERN DEVICE_PUBLIC(int) gpio_device_lowpower_exit(gpio_device_t *dev);
#ifdef __cplusplus
}
#endif


#endif

